package com.service.admin.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.service.core.exception.CommonException;
import com.service.dao.enums.CommonStatusEnums;
import com.service.dao.mapper.ProductPayTypeMapper;
import com.service.dao.model.ProductPayType;
import com.service.admin.product.service.ProductPayTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;


@Service("productPayTypeService")
public class ProductPayTypeServiceImpl extends ServiceImpl<ProductPayTypeMapper, ProductPayType> implements ProductPayTypeService {

//    @Override
//    public List<ProductPayTypeRep> listByOrderType(Integer orderType) {
//
//        List<ProductPayType> list = list(new QueryWrapper<ProductPayType>().lambda()
//                .eq(ProductPayType::getProductType, orderType)
//                .eq(ProductPayType::getProductPayStatus, CommonStatusEnums.ACTIVE.getCode()));
//
//        if (ObjectUtils.isEmpty(list)) {
//            throw new CommonException("该产品未配置支付方式", "product_pay_type_not_exist");
//        }
//        return list.stream().map(this::apply).filter(item -> !ObjectUtils.isEmpty(item)).collect(Collectors.toList());
//    }
//
//    private ProductPayTypeRep apply(ProductPayType item) {
//        List<PayTypeRep> repList = payTypeService.listByPayGroup(item.getPayGroup());
//        if (ObjectUtils.isEmpty(repList)) {
//            return null;
//        }
//        ProductPayTypeRep payTypeRep = new ProductPayTypeRep();
//        payTypeRep.setPayTypeList(repList);
//        payTypeRep.setPayName(repList.get(0).getPayName());
//        payTypeRep.setPayGroup(item.getPayGroup());
//        return payTypeRep;
//    }
//
//    @Override
//    public List<ProductPayTypeRep> listValidPayTypeByOrderType(BigDecimal totalMoney, Integer memberId, Integer orderType) {
//        return listByOrderType(orderType).stream()
//                .filter(item -> payService.isEnoughPayOrder(totalMoney, memberId, item.getPayTypeList()))
//                .collect(Collectors.toList());
//    }
}
